package cn.tedu.text;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;

//实现文件上传和下载
public class FileCopyClient {
    public static void main(String[] args) throws IOException {
        //创建TCP客户端对象
        Socket s=new Socket();

        //发起连接
        s.connect(
                new InetSocketAddress
                        ("127.0.0.1",9091));

        //创建代表文件类的对象
        File file=new File("D:\\软件\\jdk1.8.0_45.zip");

        //新建文件字节输入流对象
        FileInputStream fis=new FileInputStream(file);

        //获取自带字节输出流对象
        OutputStream os = s.getOutputStream();

        //把文件名称的长度值传输到服务器
        os.write(file.getName().getBytes().length);

        //把文件名称内容传输到服务器
        os.write(file.getName().getBytes());

        //读取数据
        //自建缓冲区
        byte[] bs=new byte[1024*1024*10];//10MB
        int len=-1;
        while ((len=fis.read(bs))!=-1){
            //把读取到数组里的内容写出到服务器端
            os.write(bs,0,len);
        }

        //通知客户端数据已经发送完毕
        s.shutdownOutput();


        //关流
        s.close();
        fis.close();

    }

}
